AWS CloudWatch Events + Amazon SNSで、AWS管理コンソールのサインインを検知しメールで通知する
はじめに
先日、CloudWatchに面白い新機能が実装されました。
CloudWatch EventsはEC2の状態遷移やスケジュール、API呼び出し、AWS管理コンソールへのサインイン、Auto ScalingのEC2の起動や削除の成功/失敗といった、イベントをトリガーに駆動する機能です。Lambdaもそうですが、こういったイベント駆動型のサービスが増えることで、各サービスを簡単に結合することが出来、ますますサーバレスなシステム構築が簡単になります。
さて、今回はAWS CloudWatch Eventsを使って、AWS管理コンソールへのサインインを検知しメールで通知する仕組みを作ってみました。
やってみた
事前準備
CloudWatch EventsでAWS管理コンソールのサインインを検知するためには、CloudTrailが有効になっている必要がありますので、事前に設定しておきます。
SNSの設定
まず、通知を行うためのSNSの設定を行います。AWS管理コンソールのSNS画面で[Create Topics]をクリックします。
[Create new topic]画面が表示されます。[Topic name]と[Display name]に、適当なわかりやすい名前を入力します。[Create topic]ボタンをクリックします。
Topicが作成されます。次に通知するメールアドレスの登録をしますので、[Create Subscription]ボタンをクリックします。
[Create Subscription]画面が表示されます。[Protocol]で[Email]を選択し、[Endpoint]で通知先のメールアドレスを入力します。[Create Subscription]ボタンをクリックします。
設定したメールアドレスに以下のような[AWS Notification]メールが届きますので、[Confirm Subscription]をクリックします。
以下の画面が表示されるとSubscriptionが成功です。
これでSNSの準備ができました。
CloudWatch Eventsの設定
AWS管理コンソールのCloudWatch画面から[Events]をクリックします。
[Create rule]をクリックします。
[Create rule]画面が表示されます。[Event selector]で[AWS console sign-in]を選びます。
[Targets]で[Add Target]をクリックします。
[SNS topic]を選択します。[topic]には上記で作成したSNS Topicを指定します。[configure details]ボタンをクリックします。
[Configure rule details]画面が表示されます。[Name]に適当な名前、[Description]に説明を入力します。[State]で[Enabled]にチェックが入っていることを確認します。[Create rule]ボタンをクリックします。
これでCloudWatch Eventsのためのruleが作成されました。
通知してみる
それではAWS管理コンソールにログインしてみましょう。
以下のようなメールが通知されれば成功です!
さいごに
難しいことはしておらず、CloudWatch Eventsに用意された機能だけで簡単に設定できます。AWS管理コンソールへサインインすること自体がとても重要なイベントであり、ログとしての管理やメールでの通知をすることで、不正な利用があった場合にも早期に検知できます。
CloudWatch Eventsはとても可能性のある機能だと思います。いろいろな活用方法を検討したいと思います!